﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WindowsFormsApplication2
{
    class Regra2 : Regras
    {
        public string[,] priMatriz;


        public string[,] getMatriz(string[] lines)
        {
            priMatriz = new string[lines.Length, 95];
            //priMatriz = new string[1,1];
            string troca;
            int coLines = 0; //341
            StringBuilder auxTroca = new StringBuilder();


            for (int linha = 0; linha < lines.Length; linha++)
            {
                for (int coluna = 0; coluna < 95; coluna++)
                {
                    switch (coluna)
                    {
                        //Tipo de Registro
                        //Tamanho 1 - Posição 0
                        case 0:
                            troca = lines[linha][coluna].ToString();
                            priMatriz[linha, coluna] = troca;
                            break;
                        //Controle Sequencial de gravação
                            //Tamanho 12 - Posição 1~12
                        case 1:
                            for (coLines = 1; coLines <= 12; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;
                        //Identificador Único do Recurso (NRC)
                            //Tamanho 25 - Posição 13~37
                        case 11:
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 37; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;

                        //DDD
                            //Tamanho 2 - Posição 38~39
                        case 14:
                            for (; coLines <= 39; coLines++) //Até 12 porque é regra de negócio
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;

                        //Numero do Telefone
                            //Tamanho 10 - Posição 40~49
                        case 15:
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 49; coLines++) //Até 12 porque é regra de negócio
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;

                        //Características do Recurso
                            //Tamanho 15 - Posição 50~64 
                        case 18:
                            for (; coLines <= 64; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;

                        //CNL do recurso Endereço Ponta A
                            //Tamanho 5 - Posição 65~69
                        case 40:
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 69; coLines++)
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;

                        //Nome da Localidade do Endereço Ponta A
                            //Tamanho 20 - Posição 70~89
                        case 41:
                            for (; coLines <= 89; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;

                        //UF da Localidade Ponta A
                            //Tamanho 2 - Posição 90~91
                        case 42:
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 91; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;

                        //Endereço da Ponta A
                            //Tamanho 30 - Posição 92~121
                        case 43:
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 121; coLines++)
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;

                        //N° do endereço da Ponta A
                            //Tamanho 5 - Posição 122~126
                        case 44:
                            for (; coLines <= 126; coLines++)
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;

                        //Complemento da Ponta A
                            //Tamanho 10 - Posição 127~136
                        case 45:
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 136; coLines++)
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;

                        //Bairro da Ponta A
                            //Tamanho 20 - Posição 137~156
                        case 46:
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 156; coLines++)
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;

                        //CNL do recurso Endereço Ponta B
                            //Tamanho 5 - Posição 157~161
                        case 47:
                            for (; coLines <= 161; coLines++)
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;

                        //Nome da Localidade Endereço Ponta B
                            //Tamanho 20 - Posição 162~181
                        case 48:
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 181; coLines++)
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;

                        //UF da Localidade Ponta B
                            //Tamamnho 2 - Posição 182~183
                        case 49:
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 183; coLines++)
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;

                        //Endereço da Ponta B
                            //Tamanho 30 - Posição 184~213
                        case 50:
                            for (; coLines <= 213; coLines++)
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;

                        //N° do endereço da Ponta B
                            //Tamanho 5 - Posição 214~218
                        case 51:
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 218; coLines++)
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;

                        //Complemento da Ponta B
                            //Tamanho 10 - Posição 219~228
                        case 52:
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 228; coLines++)
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;

                        //Bairro da Ponta B
                            //Tamanho 20 - Posição 229~248
                        case 53:
                            for (; coLines <= 248; coLines++)
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;

                        //Filler
                            //Tamanho 101 - Posição 249~349 
                        case 92:
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 349; coLines++)
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;
                    }

                }
            }

            return priMatriz;
        }
    }
}